package com.ruoyi.questionnaire.service;

import java.util.List;

import com.ruoyi.questionnaire.domain.QuestionnaireAnswer;
import com.ruoyi.questionnaire.domain.QuestionnaireAnswerSubmitDTO;
import com.ruoyi.questionnaire.domain.QuestionnaireAnswerVO;

/**
 * 问卷答案Service接口
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public interface IQuestionnaireAnswerService 
{
    /**
     * 查询问卷答案
     * 
     * @param id 问卷答案主键
     * @return 问卷答案
     */
    public QuestionnaireAnswer selectQuestionnaireAnswerById(Long id);

    /**
     * 查询问卷答案列表
     * 
     * @param questionnaireAnswer 问卷答案
     * @return 问卷答案集合
     */
    public List<QuestionnaireAnswer> selectQuestionnaireAnswerList(QuestionnaireAnswer questionnaireAnswer);

    /**
     * 查询问卷答案VO列表（包含问卷标题和用户信息）
     * 
     * @param questionnaireAnswer 问卷答案
     * @return 问卷答案VO集合
     */
    public List<QuestionnaireAnswerVO> selectQuestionnaireAnswerVOList(QuestionnaireAnswer questionnaireAnswer);

    /**
     * 新增问卷答案
     * 
     * @param questionnaireAnswer 问卷答案
     * @return 结果
     */
    public int insertQuestionnaireAnswer(QuestionnaireAnswer questionnaireAnswer);

    /**
     * 修改问卷答案
     * 
     * @param questionnaireAnswer 问卷答案
     * @return 结果
     */
    public int updateQuestionnaireAnswer(QuestionnaireAnswer questionnaireAnswer);

    /**
     * 批量删除问卷答案
     * 
     * @param ids 需要删除的问卷答案主键集合
     * @return 结果
     */
    public int deleteQuestionnaireAnswerByIds(Long[] ids);

    /**
     * 删除问卷答案信息
     * 
     * @param id 问卷答案主键
     * @return 结果
     */
    public int deleteQuestionnaireAnswerById(Long id);

    /**
     * 根据问卷ID查询答案列表
     * 
     * @param questionnaireId 问卷ID
     * @return 答案列表
     */
    public List<QuestionnaireAnswer> selectAnswersByQuestionnaireId(Long questionnaireId);

    /**
     * 提交问卷答卷
     * 
     * @param questionnaireAnswer 问卷答卷
     * @return 结果
     */
    public int submitQuestionnaireAnswer(QuestionnaireAnswer questionnaireAnswer);

    /**
     * 提交问卷答卷（新方法，支持答案详情）
     * 
     * @param submitDTO 问卷答案提交DTO
     * @return 结果
     */
    public int submitQuestionnaireAnswerWithDetails(QuestionnaireAnswerSubmitDTO submitDTO);

    /**
     * 统计指定用户提交的答卷数量
     * @param userId 用户ID
     * @return 答卷数量
     */
    int countByUserId(Long userId);

    /**
     * 查询单个答卷VO（含详情）
     */
    QuestionnaireAnswerVO selectQuestionnaireAnswerVOById(Long id);
} 